from fastapi import FastAPI
from pydantic import BaseModel
from dotenv import load_dotenv

load_dotenv()

HOST = os.getenv("HOST") or "127.0.0.1"
PORT  = os.getenv("PORT") or "8080"

# Создаем экземпляр приложения FastAPI
app = FastAPI()

# Определяем модель данных для валидации входных данных
class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None

# Маршрут для корневого URL
@app.get("/")
def read_root():
    return {"message": "Hello, World!"}

# Маршрут для получения информации о предмете по ID
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

# Маршрут для создания нового предмета
@app.post("/items/")
def create_item(item: Item):
    item_dict = item.dict()
    if item.tax:
        price_with_tax = item.price + item.tax
        item_dict.update({"price_with_tax": price_with_tax})
    return item_dict

# Запуск приложения
if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host=HOST, port=PORT)
